
#ifndef __LOG_H_
#define __LOG_H_

extern int debug_level;

enum {ERROR, INFO, DEBUG, MAX_LEVEL}; // 枚举

int log_init();
void log_print(int type, const char *file, const char *func, const int line, const char *format, ...);
void log_destroy(void);

#define LOG_E(info, ...) do{ if (debug_level >= ERROR) log_print(ERROR, __FILE__, __func__, __LINE__, info, ##__VA_ARGS__); }while(0)
#define LOG_I(info, ...) do{ if (debug_level >= INFO) log_print(INFO, __FILE__, __func__, __LINE__, info, ##__VA_ARGS__); }while(0)
#define LOG_D(info, ...) do{ if (debug_level >= DEBUG) log_print(DEBUG, __FILE__, __func__, __LINE__, info, ##__VA_ARGS__); }while(0)
//##__VA_ARGS__是一个特殊的标记，用于处理可变数量的参数。
//用户可以在提供info参数后继续提供其他参数，这些参数将被传递给log_print函数。

#endif

